package br.com.it4.zmed.persistence;

import java.util.List;

import br.com.it4.framework.persistence.dao.BaseDAO;
import br.com.it4.framework.persistence.exception.PersistenceException;
import br.com.it4.zmed.entity.Exame;
import br.com.it4.zmed.filter.ExameFilter;

/**
 * Interface do repositório para persistência básica para o Exame.
 * 
 * @author Mozart Silva (mozart.vsilva@gmail.com)
 * 
 */
public interface ExameDAO extends BaseDAO<Exame> {

    /**
     * Consulta a lista de convenios.
     * 
     * @throws PersistenceException
     *             Caso ocorra algum erro na execução.
     */
    public List<Exame> get() throws PersistenceException;

    /**
     * Consulta um determinado número de Exames a partir do filtro.
     * 
     * @param filtro
     *            Filtro para o Exame.
     * @param registroInicio
     *            O registro de inicio retornado.
     * @param registroFim
     *            O registro final retornado.
     * @return A lista de Exames.
     * @throws PersistenceException
     *             Caso ocorra algum erro na execução.
     */
    public List<Exame> get(ExameFilter filtro, int registroInicio, int registroFim)
            throws PersistenceException;

    /**
     * Calcula o número de registros de Exames a partir pelo filtro.
     * 
     * @param filtro
     *            Filtro para o Exame.
     * @return O número de registros encontrados.
     * @throws PersistenceException
     *             Caso ocorra algum erro na execução.
     */
    public Long getCount(ExameFilter filtro) throws PersistenceException;

}